﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using DashBoardDatos;
using DashBoardEntidades;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Data.SqlClient;
//Referencia para hacer los hilos 
using System.Threading;




namespace DashBoardNegocios
{
    public class c_ControladorNegocios
    {
        /// <summary>
        /// Variables de la clase
        /// </summary>
        private static c_ControladorNegocios _Instance;
        c_ControladorBaseDatos _DataBase;

        /// <summary>
        /// Constructor de la clase
        /// </summary>
        private c_ControladorNegocios() { }

        /// <summary>
        /// Metodo singleton de la clase
        /// </summary>
        /// <returns></returns>
        public static c_ControladorNegocios getInstance()
        {
            if (_Instance == null)
            {
                _Instance = new c_ControladorNegocios();
            }
            return _Instance;
        }
        //*****************************************************************************
        /// <summary>
        /// Permite iniciar sesion en el sistema
        /// </summary>
        /// <param name="_userName"></param>
        /// <param name="_pass"></param>
        /// <returns></returns>
        public int _LogIn(string _userName, string _pass)
        {
            int _respuesta = 0;
            _DataBase = c_ControladorBaseDatos.getInstance();
            DashBoardSeguridad _new = new DashBoardSeguridad();
            string _passSha = _new.convertirSHA1(_pass);
            return _respuesta = _DataBase.SeguridadLogin(_userName, _passSha);
        }
        //*****************************************************************************
        /// <summary>
        /// Inserta informacion de un bono de manera manual y no haciendo uso del barrido html
        /// de la aplicacion de escritorio
        /// </summary>
        /// <param name="_fechaHora"></param>
        /// <param name="_precio"></param>
        /// <param name="_precioCambio"></param>
        /// <param name="_precioCierre"></param>
        /// <param name="_rendimiento"></param>
        /// <param name="_rendimientoCambio"></param>
        /// <param name="_rendimientoCierre"></param>
        /// <param name="_tradeTime"></param>
        /// <param name="_simbolo"></param>
        public void _insInfoBono(DateTime _fechaHora, double _precio, double _precioCambio, double _precioCierre, double _rendimiento, double _rendimientoCambio, double _rendimientoCierre, string _tradeTime, string _simbolo)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            _DataBase.Ins_Info_Bonos(_fechaHora, _precio, _precioCambio, _precioCierre, _rendimiento, _rendimientoCambio, _rendimientoCierre, _tradeTime, _simbolo);
        }
        //*****************************************************************************
        /// <summary>
        /// Inserta nuevos tipos de bonos
        /// </summary>
        /// <param name="_nombre"></param>
        /// <param name="_simbolo"></param>
        public void _insTipoBono(string _nombre, string _simbolo)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            _DataBase.Ins_TipoBono(_nombre, _simbolo);
        }
        //*****************************************************************************
        public void _insUsuario(string _nombre, string _nUsuario, string _apel1, string _apel2, string _correo, string _pass, string _tipoU)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            _DataBase.Ins_Usuario(_nombre, _nUsuario, _apel1, _apel2, _correo, _pass, _tipoU);
            
        }
        //******************************************************************************
        public void _insValoresBolsa(DateTime _fechaHora, double _precio, string _descripcion, string _tipoValorBolsa)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            _DataBase.Ins_ValoresBolsa(_fechaHora, _precio, _descripcion, _tipoValorBolsa);
        }
        //******************************************************************************
        public void _insTipoValorBolsa(string _nombre, string _simbolo)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            _DataBase.Ins_TipoValorBolsa(_nombre, _simbolo);
        }
        //******************************************************************************
        public SqlDataReader _obtComparaBonosPrecio(string tipo1, string tipo2, DateTime _fecha1, DateTime _fecha2)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtComparaBonosPrecio(tipo1, tipo2, _fecha1, _fecha2);
        }
        //******************************************************************************
        public SqlDataReader _obtComparaBonosRendimiento(string tipo1, string tipo2, DateTime _fecha1, DateTime _fecha2)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtComparaBonosRendimiento(tipo1, tipo2, _fecha1, _fecha2);
        }
        //******************************************************************************
        public SqlDataReader _obtInfoBonoPrecio(string _tipoBono, DateTime _fecha1, DateTime _fecha2)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtInfoBonoPrecio(_tipoBono, _fecha1, _fecha2);
        }
        //******************************************************************************
        public SqlDataReader _obtInfoBonoRendimiento(string tipoBono, SqlDateTime _fecha1, SqlDateTime _fecha2)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtInfoBonoRendimiento(tipoBono, _fecha1, _fecha2);
        }
        //******************************************************************************
        public SqlDataReader _obtInfoGeneralBono(string tipoBono)
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtInfoGeneralBono(tipoBono);
        }
        //******************************************************************************
        public ArrayList _obtTipoBonos()
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtTipoBonos();
        }
        //******************************************************************************
        public ArrayList _obtTiposUsuario()
        {
            _DataBase = c_ControladorBaseDatos.getInstance();
            return _DataBase.ObtTipoUsuario();
        }
    }
}
